package cn.mitool.core.codec;

import java.nio.charset.StandardCharsets;

/**
 * Base64
 *
 * @author dragon
 * @version 1.0
 * @date 2024/7/4 14:20
 */
public class Base64 {

    /**
     * Base64编码
     *
     * @param data 数据
     * @return Base64编码字符串
     */
    public static String encode(String data) {
        return encode(data.getBytes(StandardCharsets.UTF_8));
    }

    /**
     * Base64编码
     *
     * @param data 数据
     * @return Base64编码字符串
     */
    public static String encode(byte[] data) {
        return java.util.Base64.getEncoder().encodeToString(data);
    }

    /**
     * Base64解码
     *
     * @param data 数据
     * @return Base64解码字符串
     */
    public static String decode(String data) {
        return decode(data.getBytes(StandardCharsets.UTF_8));
    }

    /**
     * Base64解码
     *
     * @param data 数据
     * @return Base64解码字符串
     */
    public static String decode(byte[] data) {
        return new String(java.util.Base64.getDecoder().decode(data));
    }

    /**
     * Base64Url编码
     *
     * @param data 数据
     * @return Base64解码字符串
     */
    public static String urlEncode(String data) {
        return urlEncode(data.getBytes(StandardCharsets.UTF_8));
    }

    /**
     * Base64Url编码
     *
     * @param data 数据
     * @return Base64解码字符串
     */
    public static String urlEncode(byte[] data) {
        return java.util.Base64.getUrlEncoder().encodeToString(data);
    }

    public static String urlDecode(String data) {
        return urlDecode(data.getBytes(StandardCharsets.UTF_8));
    }

    public static String urlDecode(byte[] data) {
        return new String(java.util.Base64.getUrlDecoder().decode(data));
    }

}
